home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 October: Mac OS SDK / Dev.CD Oct 00 SDK1.toast / Development Kits / Mac OS / GameSprocket SDKs / DrawSprocket SDK / Interfaces&Libraries / DrawSprocket.h next >
Encoding:
C/C++ Source or Header  |  1999-12-07  |  12.4 KB  |  481 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        DrawSprocket.h
  3.  
  4.      Contains:    Games Sprockets: DrawSprocket interfaces
  5.  
  6.      Version:    Technology:    Draw Sprocket 1.7
  7.                  Release:    For use with 3.3 Universal Interfaces
  8.  
  9.      Copyright:    © 1996-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __DRAWSPROCKET__
  18. #define __DRAWSPROCKET__
  19.  
  20. #ifndef __MACTYPES__
  21. #include <MacTypes.h>
  22. #endif
  23.  
  24. #ifndef __EVENTS__
  25. #include <Events.h>
  26. #endif
  27.  
  28. #ifndef __QUICKDRAW__
  29. #include <Quickdraw.h>
  30. #endif
  31.  
  32. #ifndef __QDOFFSCREEN__
  33. #include <QDOffscreen.h>
  34. #endif
  35.  
  36. #ifndef __DISPLAYS__
  37. #include <Displays.h>
  38. #endif
  39.  
  40. #ifndef __MACERRORS__
  41. #include <MacErrors.h>
  42. #endif
  43.  
  44.  
  45.  
  46.  
  47. #if PRAGMA_ONCE
  48. #pragma once
  49. #endif
  50.  
  51. #ifdef __cplusplus
  52. extern "C" {
  53. #endif
  54.  
  55. #if PRAGMA_IMPORT
  56. #pragma import on
  57. #endif
  58.  
  59. #if PRAGMA_STRUCT_ALIGN
  60.     #pragma options align=power
  61. #elif PRAGMA_STRUCT_PACKPUSH
  62.     #pragma pack(push, 2)
  63. #elif PRAGMA_STRUCT_PACK
  64.     #pragma pack(2)
  65. #endif
  66.  
  67. #if PRAGMA_ENUM_ALWAYSINT
  68.     #pragma enumsalwaysint on
  69. #elif PRAGMA_ENUM_OPTIONS
  70.     #pragma option enum=int
  71. #elif PRAGMA_ENUM_PACK
  72.     #if __option(pack_enums)
  73.         #define PRAGMA_ENUM_PACK__DRAWSPROCKET__
  74.     #endif
  75.     #pragma options(!pack_enums)
  76. #endif
  77.  
  78. /*
  79. ********************************************************************************
  80. ** constants
  81. ********************************************************************************
  82. */
  83.  
  84. enum DSpDepthMask {
  85.     kDSpDepthMask_1                = 1 << 0,
  86.     kDSpDepthMask_2                = 1 << 1,
  87.     kDSpDepthMask_4                = 1 << 2,
  88.     kDSpDepthMask_8                = 1 << 3,
  89.     kDSpDepthMask_16            = 1 << 4,
  90.     kDSpDepthMask_32            = 1 << 5,
  91.     kDSpDepthMask_All            = -1L
  92. };
  93. typedef enum DSpDepthMask DSpDepthMask;
  94.  
  95.  
  96. enum DSpColorNeeds {
  97.     kDSpColorNeeds_DontCare        = 0L,
  98.     kDSpColorNeeds_Request        = 1L,
  99.     kDSpColorNeeds_Require        = 2L
  100. };
  101. typedef enum DSpColorNeeds DSpColorNeeds;
  102.  
  103.  
  104. enum DSpContextState {
  105.     kDSpContextState_Active        = 0L,
  106.     kDSpContextState_Paused        = 1L,
  107.     kDSpContextState_Inactive    = 2L
  108. };
  109. typedef enum DSpContextState DSpContextState;
  110.  
  111. /* kDSpContextOption_QD3DAccel not yet implemented */
  112.  
  113. enum DSpContextOption {
  114.                                                                 /*    kDSpContextOption_QD3DAccel        = 1<<0,*/
  115.     kDSpContextOption_PageFlip    = 1 << 1,
  116.     kDSpContextOption_DontSyncVBL = 1 << 2,
  117.     kDSpContextOption_Stereoscopic = 1 << 3
  118. };
  119. typedef enum DSpContextOption DSpContextOption;
  120.  
  121.  
  122. enum DSpAltBufferOption {
  123.     kDSpAltBufferOption_RowBytesEqualsWidth = 1 << 0
  124. };
  125. typedef enum DSpAltBufferOption DSpAltBufferOption;
  126.  
  127.  
  128. enum DSpBufferKind {
  129.     kDSpBufferKind_Normal        = 0
  130. };
  131. typedef enum DSpBufferKind DSpBufferKind;
  132.  
  133.  
  134. enum DSpBlitMode {
  135.     kDSpBlitMode_Plain            = 0,
  136.     kDSpBlitMode_SrcKey            = 1 << 0,
  137.     kDSpBlitMode_DstKey            = 1 << 1,
  138.     kDSpBlitMode_Interpolation    = 1 << 2
  139. };
  140. typedef enum DSpBlitMode DSpBlitMode;
  141.  
  142. /*
  143. ********************************************************************************
  144. ** data types
  145. ********************************************************************************
  146. */
  147. typedef struct OpaqueDSpAltBufferReference*  DSpAltBufferReference;
  148. typedef struct OpaqueDSpContextReference*  DSpContextReference;
  149. #define kDSpEveryContext ((DSpContextReference)NULL)
  150. typedef CALLBACK_API_C( Boolean , DSpEventProcPtr )(EventRecord *inEvent);
  151. typedef CALLBACK_API_C( Boolean , DSpCallbackProcPtr )(DSpContextReference inContext, void *inRefCon);
  152.  
  153. struct DSpContextAttributes {
  154.     Fixed                             frequency;
  155.     UInt32                             displayWidth;
  156.     UInt32                             displayHeight;
  157.     UInt32                             reserved1;
  158.     UInt32                             reserved2;
  159.     UInt32                             colorNeeds;
  160.     CTabHandle                         colorTable;
  161.     OptionBits                         contextOptions;
  162.     OptionBits                         backBufferDepthMask;
  163.     OptionBits                         displayDepthMask;
  164.     UInt32                             backBufferBestDepth;
  165.     UInt32                             displayBestDepth;
  166.     UInt32                             pageCount;
  167.     char                             filler[3];
  168.     Boolean                         gameMustConfirmSwitch;
  169.     UInt32                             reserved3[4];
  170. };
  171. typedef struct DSpContextAttributes        DSpContextAttributes;
  172. typedef DSpContextAttributes *            DSpContextAttributesPtr;
  173.  
  174. struct DSpAltBufferAttributes {
  175.     UInt32                             width;
  176.     UInt32                             height;
  177.     DSpAltBufferOption                 options;
  178.     UInt32                             reserved[4];
  179. };
  180. typedef struct DSpAltBufferAttributes    DSpAltBufferAttributes;
  181. typedef struct DSpBlitInfo                 DSpBlitInfo;
  182. typedef CALLBACK_API_C( void , DSpBlitDoneProc )(DSpBlitInfo *info);
  183.  
  184. struct DSpBlitInfo {
  185.     Boolean                         completionFlag;
  186.     char                             filler[3];
  187.     DSpBlitDoneProc                 completionProc;
  188.     DSpContextReference             srcContext;
  189.     CGrafPtr                         srcBuffer;
  190.     Rect                             srcRect;
  191.     UInt32                             srcKey;
  192.  
  193.     DSpContextReference             dstContext;
  194.     CGrafPtr                         dstBuffer;
  195.     Rect                             dstRect;
  196.     UInt32                             dstKey;
  197.  
  198.     DSpBlitMode                     mode;
  199.     UInt32                             reserved[4];
  200. };
  201.  
  202.  
  203. typedef DSpBlitInfo *                    DSpBlitInfoPtr;
  204. /*
  205. ********************************************************************************
  206. ** function prototypes
  207. ********************************************************************************
  208. */
  209. /*
  210. ** global operations
  211. */
  212. #if CALL_NOT_IN_CARBON
  213. EXTERN_API_C( OSStatus )
  214. DSpStartup                        (void);
  215.  
  216. EXTERN_API_C( OSStatus )
  217. DSpShutdown                        (void);
  218.  
  219. EXTERN_API_C( NumVersion )
  220. DSpGetVersion                    (void);
  221.  
  222. EXTERN_API_C( OSStatus )
  223. DSpGetFirstContext                (DisplayIDType             inDisplayID,
  224.                                  DSpContextReference *    outContext);
  225.  
  226. EXTERN_API_C( OSStatus )
  227. DSpGetNextContext                (DSpContextReference     inCurrentContext,
  228.                                  DSpContextReference *    outContext);
  229.  
  230. EXTERN_API_C( OSStatus )
  231. DSpGetCurrentContext            (DisplayIDType             inDisplayID,
  232.                                  DSpContextReference *    outContext);
  233.  
  234. EXTERN_API_C( OSStatus )
  235. DSpFindBestContext                (DSpContextAttributesPtr  inDesiredAttributes,
  236.                                  DSpContextReference *    outContext);
  237.  
  238. EXTERN_API_C( OSStatus )
  239. DSpFindBestContextOnDisplayID    (DSpContextAttributesPtr  inDesiredAttributes,
  240.                                  DSpContextReference *    outContext,
  241.                                  DisplayIDType             inDisplayID);
  242.  
  243. EXTERN_API_C( OSStatus )
  244. DSpCanUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  245.                                  Boolean *                outUserCanSelectContext);
  246.  
  247. EXTERN_API_C( OSStatus )
  248. DSpUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  249.                                  DisplayIDType             inDialogDisplayLocation,
  250.                                  DSpEventProcPtr         inEventProc,
  251.                                  DSpContextReference *    outContext);
  252.  
  253. EXTERN_API_C( OSStatus )
  254. DSpProcessEvent                    (EventRecord *            inEvent,
  255.                                  Boolean *                outEventWasProcessed);
  256.  
  257. EXTERN_API_C( OSStatus )
  258. DSpSetBlankingColor                (const RGBColor *        inRGBColor);
  259.  
  260. EXTERN_API_C( OSStatus )
  261. DSpSetDebugMode                    (Boolean                 inDebugMode);
  262.  
  263. EXTERN_API_C( OSStatus )
  264. DSpFindContextFromPoint            (Point                     inGlobalPoint,
  265.                                  DSpContextReference *    outContext);
  266.  
  267. EXTERN_API_C( OSStatus )
  268. DSpGetMouse                        (Point *                outGlobalPoint);
  269.  
  270. /*
  271. ** alternate buffer operations
  272. */
  273. EXTERN_API_C( OSStatus )
  274. DSpAltBuffer_New                (DSpContextReference     inContext,
  275.                                  Boolean                 inVRAMBuffer,
  276.                                  DSpAltBufferAttributes * inAttributes,
  277.                                  DSpAltBufferReference * outAltBuffer);
  278.  
  279. EXTERN_API_C( OSStatus )
  280. DSpAltBuffer_Dispose            (DSpAltBufferReference     inAltBuffer);
  281.  
  282. EXTERN_API_C( OSStatus )
  283. DSpAltBuffer_InvalRect            (DSpAltBufferReference     inAltBuffer,
  284.                                  const Rect *            inInvalidRect);
  285.  
  286. EXTERN_API_C( OSStatus )
  287. DSpAltBuffer_GetCGrafPtr        (DSpAltBufferReference     inAltBuffer,
  288.                                  DSpBufferKind             inBufferKind,
  289.                                  CGrafPtr *                outCGrafPtr,
  290.                                  GDHandle *                outGDevice);
  291.  
  292. /*
  293. ** context operations
  294. */
  295. /* general */
  296. EXTERN_API_C( OSStatus )
  297. DSpContext_GetAttributes        (DSpContextReference     inContext,
  298.                                  DSpContextAttributesPtr  outAttributes);
  299.  
  300. EXTERN_API_C( OSStatus )
  301. DSpContext_Reserve                (DSpContextReference     inContext,
  302.                                  DSpContextAttributesPtr  inDesiredAttributes);
  303.  
  304. EXTERN_API_C( OSStatus )
  305. DSpContext_Queue                (DSpContextReference     inParentContext,
  306.                                  DSpContextReference     inChildContext,
  307.                                  DSpContextAttributesPtr  inDesiredAttributes);
  308.  
  309. EXTERN_API_C( OSStatus )
  310. DSpContext_Switch                (DSpContextReference     inOldContext,
  311.                                  DSpContextReference     inNewContext);
  312.  
  313. EXTERN_API_C( OSStatus )
  314. DSpContext_Release                (DSpContextReference     inContext);
  315.  
  316. EXTERN_API_C( OSStatus )
  317. DSpContext_GetDisplayID            (DSpContextReference     inContext,
  318.                                  DisplayIDType *        outDisplayID);
  319.  
  320. EXTERN_API_C( OSStatus )
  321. DSpContext_GlobalToLocal        (DSpContextReference     inContext,
  322.                                  Point *                ioPoint);
  323.  
  324. EXTERN_API_C( OSStatus )
  325. DSpContext_LocalToGlobal        (DSpContextReference     inContext,
  326.                                  Point *                ioPoint);
  327.  
  328. EXTERN_API_C( OSStatus )
  329. DSpContext_SetVBLProc            (DSpContextReference     inContext,
  330.                                  DSpCallbackProcPtr     inProcPtr,
  331.                                  void *                    inRefCon);
  332.  
  333. EXTERN_API_C( OSStatus )
  334. DSpContext_GetFlattenedSize        (DSpContextReference     inContext,
  335.                                  UInt32 *                outFlatContextSize);
  336.  
  337. EXTERN_API_C( OSStatus )
  338. DSpContext_Flatten                (DSpContextReference     inContext,
  339.                                  void *                    outFlatContext);
  340.  
  341. EXTERN_API_C( OSStatus )
  342. DSpContext_Restore                (void *                    inFlatContext,
  343.                                  DSpContextReference *    outRestoredContext);
  344.  
  345. EXTERN_API_C( OSStatus )
  346. DSpContext_GetMonitorFrequency    (DSpContextReference     inContext,
  347.                                  Fixed *                outFrequency);
  348.  
  349. EXTERN_API_C( OSStatus )
  350. DSpContext_SetMaxFrameRate        (DSpContextReference     inContext,
  351.                                  UInt32                 inMaxFPS);
  352.  
  353. EXTERN_API_C( OSStatus )
  354. DSpContext_GetMaxFrameRate        (DSpContextReference     inContext,
  355.                                  UInt32 *                outMaxFPS);
  356.  
  357. EXTERN_API_C( OSStatus )
  358. DSpContext_SetState                (DSpContextReference     inContext,
  359.                                  DSpContextState         inState);
  360.  
  361. EXTERN_API_C( OSStatus )
  362. DSpContext_GetState                (DSpContextReference     inContext,
  363.                                  DSpContextState *        outState);
  364.  
  365. EXTERN_API_C( OSStatus )
  366. DSpContext_IsBusy                (DSpContextReference     inContext,
  367.                                  Boolean *                outBusyFlag);
  368.  
  369. /* dirty rectangles */
  370. EXTERN_API_C( OSStatus )
  371. DSpContext_SetDirtyRectGridSize    (DSpContextReference     inContext,
  372.                                  UInt32                 inCellPixelWidth,
  373.                                  UInt32                 inCellPixelHeight);
  374.  
  375. EXTERN_API_C( OSStatus )
  376. DSpContext_GetDirtyRectGridSize    (DSpContextReference     inContext,
  377.                                  UInt32 *                outCellPixelWidth,
  378.                                  UInt32 *                outCellPixelHeight);
  379.  
  380. EXTERN_API_C( OSStatus )
  381. DSpContext_GetDirtyRectGridUnits (DSpContextReference     inContext,
  382.                                  UInt32 *                outCellPixelWidth,
  383.                                  UInt32 *                outCellPixelHeight);
  384.  
  385. EXTERN_API_C( OSStatus )
  386. DSpContext_InvalBackBufferRect    (DSpContextReference     inContext,
  387.                                  const Rect *            inRect);
  388.  
  389. /* underlays */
  390. EXTERN_API_C( OSStatus )
  391. DSpContext_SetUnderlayAltBuffer    (DSpContextReference     inContext,
  392.                                  DSpAltBufferReference     inNewUnderlay);
  393.  
  394. EXTERN_API_C( OSStatus )
  395. DSpContext_GetUnderlayAltBuffer    (DSpContextReference     inContext,
  396.                                  DSpAltBufferReference * outUnderlay);
  397.  
  398. /* gamma */
  399. EXTERN_API_C( OSStatus )
  400. DSpContext_FadeGammaOut            (DSpContextReference     inContext,
  401.                                  RGBColor *                inZeroIntensityColor);
  402.  
  403. EXTERN_API_C( OSStatus )
  404. DSpContext_FadeGammaIn            (DSpContextReference     inContext,
  405.                                  RGBColor *                inZeroIntensityColor);
  406.  
  407. EXTERN_API_C( OSStatus )
  408. DSpContext_FadeGamma            (DSpContextReference     inContext,
  409.                                  SInt32                 inPercentOfOriginalIntensity,
  410.                                  RGBColor *                inZeroIntensityColor);
  411.  
  412. /* buffering */
  413. EXTERN_API_C( OSStatus )
  414. DSpContext_SwapBuffers            (DSpContextReference     inContext,
  415.                                  DSpCallbackProcPtr     inBusyProc,
  416.                                  void *                    inUserRefCon);
  417.  
  418. EXTERN_API_C( OSStatus )
  419. DSpContext_GetBackBuffer        (DSpContextReference     inContext,
  420.                                  DSpBufferKind             inBufferKind,
  421.                                  CGrafPtr *                outBackBuffer);
  422.  
  423. EXTERN_API_C( OSStatus )
  424. DSpContext_GetFrontBuffer        (DSpContextReference     inContext,
  425.                                  CGrafPtr *                outFrontBuffer);
  426.  
  427. /* clut operations */
  428. EXTERN_API_C( OSStatus )
  429. DSpContext_SetCLUTEntries        (DSpContextReference     inContext,
  430.                                  const ColorSpec *        inEntries,
  431.                                  UInt16                 inStartingEntry,
  432.                                  UInt16                 inLastEntry);
  433.  
  434. EXTERN_API_C( OSStatus )
  435. DSpContext_GetCLUTEntries        (DSpContextReference     inContext,
  436.                                  ColorSpec *            outEntries,
  437.                                  UInt16                 inStartingEntry,
  438.                                  UInt16                 inLastEntry);
  439.  
  440. /* blit operations */
  441. EXTERN_API_C( OSStatus )
  442. DSpBlit_Faster                    (DSpBlitInfoPtr         inBlitInfo,
  443.                                  Boolean                 inAsyncFlag);
  444.  
  445. EXTERN_API_C( OSStatus )
  446. DSpBlit_Fastest                    (DSpBlitInfoPtr         inBlitInfo,
  447.                                  Boolean                 inAsyncFlag);
  448.  
  449.  
  450. #endif  /* CALL_NOT_IN_CARBON */
  451.  
  452.  
  453. #if PRAGMA_ENUM_ALWAYSINT
  454.     #pragma enumsalwaysint reset
  455. #elif PRAGMA_ENUM_OPTIONS
  456.     #pragma option enum=reset
  457. #elif defined(PRAGMA_ENUM_PACK__DRAWSPROCKET__)
  458.     #pragma options(pack_enums)
  459. #endif
  460.  
  461. #if PRAGMA_STRUCT_ALIGN
  462.     #pragma options align=reset
  463. #elif PRAGMA_STRUCT_PACKPUSH
  464.     #pragma pack(pop)
  465. #elif PRAGMA_STRUCT_PACK
  466.     #pragma pack()
  467. #endif
  468.  
  469. #ifdef PRAGMA_IMPORT_OFF
  470. #pragma import off
  471. #elif PRAGMA_IMPORT
  472. #pragma import reset
  473. #endif
  474.  
  475. #ifdef __cplusplus
  476. }
  477. #endif
  478.  
  479. #endif /* __DRAWSPROCKET__ */
  480.  
  481.